package mylab.starters.generator.table;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;

public interface TableTemplate {

    /**
     * 检查数据库表是否存在
     *
     * @param tableName 表名
     * @return 存在状态
     */
    boolean existTable(String tableName);

    /**
     * 建单表
     *
     * @param starupMode  建表模式 {@link StarupMode}
     * @param entityClass 实体类型
     */
    default void generateTable(StarupMode starupMode, Class<?> entityClass) {
        String tableName = StringUtils.camelToUnderline(entityClass.getSimpleName());
        generateTable(starupMode, entityClass, tableName);
    }

    /**
     * 建单表
     *
     * @param starupMode  建表模式 {@link StarupMode}
     * @param entityClass 实体类型
     * @param tableName   指定表名
     */
    void generateTable(StarupMode starupMode, Class<?> entityClass, String tableName);

    /**
     * 通过扫描实体模型路径自动建表
     *
     * @param starupMode 建表模式 {@link StarupMode}
     * @param scanPack   实体模型所在路径
     */
    void generateTable(StarupMode starupMode, String scanPack);
}
